HogQL 简介
HogQL 是 PostHog 基于 ClickHouse SQL 开发的查询语言,它提供了更简单的事件和用户属性访问、空值处理以及可视化集成等增强功能。目前该功能处于公测阶段。
核心特性
1. HogQL 表达式
HogQL 表达式允许您直接访问、修改和聚合数据。它可以在以下场景中使用:
- 过滤器
- 趋势分析
- 数据分组
- 漏斗聚合
- 用户路径分析
- 会话回放
- 仪表板
- 活动标签页
2. SQL 洞察
通过 SQL 洞察功能,您可以使用标准的 SQL 命令(如 SELECT、FROM、JOIN、WHERE、GROUP BY)直接查询数据,并且可以使用 ClickHouse 的丰富函数库。这使得查询和结果展示更加灵活和可定制。
3. 数据仓库集成
HogQL 支持查询多个数据源:
- PostHog 内部数据
- 外部数据源(如 Stripe、Hubspot 等)
- 自定义数据源
数据访问
HogQL 可以访问以下数据:
- 事件属性:
properties - 用户属性:
person.properties - 基础字段:
event:事件名称elements_chain:自动捕获的元素链timestamp:时间戳distinct_id:唯一标识符person_id:用户 ID
数据类型
支持的数据类型包括:
STRING(默认)JSON(支持点号或方括号访问)DATETIME(ISO 8601 格式)INTEGERNUMERIC(浮点数)BOOLEAN
常用操作符
-
比较运算符:
=:等于!=:不等于<:小于>=:大于等于
-
逻辑运算符:
AND:与OR:或IS:是NOT:非
-
算术运算符:
+:加-:减*:乘/:除
API 查询
要通过 API 使用 HogQL,您需要:
- 获取项目 ID
- 创建具有项目查询读取权限的个人 API 密钥
- 向
/api/projects/:project_id/query端点发送 POST 请求
示例请求:
curl -X POST "https://us.posthog.com/api/projects/:project_id/query" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <personal_api_key>" \
-d '{
"query": {
"kind": "HogQLQuery",
"query": "SELECT event, COUNT() FROM events GROUP BY event ORDER BY COUNT() DESC"
}
}'
最佳实践
-
性能优化:
- 使用适当的索引
- 优化查询结构
- 合理使用聚合函数
-
数据处理:
- 使用批量操作
- 合理设置过滤条件
- 注意数据类型转换
-
调试技巧:
- 使用趋势表可视化进行调试
- 将复杂表达式拆分为小部分测试
- 检查数据类型匹配